package com.utc.cards.player.jade.agent.playerAgent;

import jade.core.AID;
import android.content.Context;

import com.utc.cards.model.PlayerModel;
import com.utc.cards.model.card.Card;
import com.utc.cards.model.deck.Deck;
import com.utc.cards.model.game.InfoType;
import com.utc.cards.model.player.Hands;

public interface IPlayerAgent
{

    public Context getContext();

    public PlayerModel getModel();

    public String getGmail();

    /*
     * to UI
     */
    public void notifyPlayersChanged(String[] players);

    public void notifyInfo(String info);

    // UI event to TABLE
    // DO NOT RENAME joinHostGame() to join() because of JADE agent has same
    // method name
    public void joinHostGame();

    public void sendCards(Deck cards);

    public void sendCards(Hands cards);

    public void askAdvice();

    /*
     * message event reception
     */
    public void onGameSelection(String gameName);

    public void onGameSubscriptionAgree();

    public void onGameSubscriptionRefuse();

    public void onPlayerTurn();

    public void onGameEnd();

    public void onGameStart();

    public void onScoreReception();

    public void onCardsChanged(Hands hands, InfoType infoType);

    public void onAdvice(Card card);

    public AID getAgentAID();

    public String getAgentName();

    public void notifyPlayerIsReady();

    void sendPlayerActive();

    void onPlayerTurnStop();

}
